Packet processing in WLAN controllers involve reception on a network interface, application of custom processing rules, and delivery back to the network interface transmission to a destination. The processing path is time and CPU intensive with due, in part, to an IP network stack.
Some controllers implement a fast path to forward packets from reception directly to transmission, based on an identified flow. The flow is typically identified by five tuple of source IP address, destination IP address, source port, destination port, and protocol. Some controllers further implement a CPU for each network interface card for additional processing improvements.
However, controllers typically have common sources and/or destinations, and thus can be indistinguishable. As a result, flow tables have been implemented as they are based on the inner contents of network packets rather than the conventional five tuples. One problem with the flow table is that locks are applied to maintain coherency during addition, deletion, or reding of entries. Although an increasing number of cores are intended to increase throughput, lock contention can cause flow tables to be a bottleneck on controller performance and fast path scalability.
Therefore, what is needed is a robust technique to packet processing with per-CPU flow tables in a network device.